/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 文件名 : com.newtouch.mark.file.StringFileOutputStream.java
 * 注意事項   :
 */
package com.newtouch.mark.file;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.log4j.Logger;

/**
 * 写入文件字节写入
 * @author Mark 
 * @version 1.0.1
 * 2012-12-30
 * StringFileOutputStream.java
 */
public class StringFileOutputStream {
    private Logger               log = Logger.getLogger(StringFileOutputStream.class);
    private BufferedOutputStream writer;

    /**
     * 初始化实例，file默认指定一个文件路径
     * @param file 文件路径
     */
    public StringFileOutputStream(File file) {
        try {
            writer = new BufferedOutputStream(new FileOutputStream(file));
        } catch (IOException e) {
            log.fatal("初始化文件错误");
        }

    }

    public StringFileOutputStream(String filePath, String encode) {
        try {
            writer = new BufferedOutputStream(new FileOutputStream(filePath));
        } catch (FileNotFoundException e) {
            log.fatal("初始化文件错误:文件不存在");
        }
    }

    /**
     * 写入字符串内容
     * @param str 字符串内容
     */
    public void writer(String str, String encode) {
        try {
            writer.write(str.getBytes(Charset.forName(encode)));
        } catch (IOException e) {
            log.fatal("写入的字符串出错，字符串内容：" + str);
        }
    }

    /**
     * 关闭文件，若没有关闭文件，则之前的文件都没有写入
     */
    public void close() {
        try {
            writer.flush();
        } catch (IOException e) {
            log.fatal("关闭文件出错：最终文件内容写入错误");
        }
        try {
            writer.close();
        } catch (IOException e) {
            log.fatal("关闭文件出错");
        }
    }

}
